﻿-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[A_UPD_TratamentoClassificacaoActual]
	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	
	BEGIN TRY

		BEGIN TRAN
			DECLARE  @UltimaJornada AS INT
					,@IDCampeonato AS INT
					,@IDJornada AS INT
					,@NumJogo AS INT
					,@Aposta1 AS INT
					,@Aposta2 AS INT
					,@ResultadoEquipa1 AS INT
					,@ResultadoEquipa2 AS INT
					,@Realizado AS BIT
					,@Pontos AS INT
					,@IDUtilizador AS INT		
					,@Jogos AS INT
					,@Vitorias AS INT
					,@Empates AS INT 
					,@Derrotas AS INT
					,@GM AS INT
					,@GS AS INT
					,@DifGolos AS INT

			SELECT @UltimaJornada = IDJornada From A_Jornada WHERE Realizada = 'N'
			
			DECLARE TratementoClassificacao CURSOR FOR

			SELECT
			JD.IDCampeonato,
			JD.IDJornada,
			JD.NumJogo,	
			A.Aposta1,
			A.Aposta2,
			JD.ResultadoEquipa1,
			JD.ResultadoEquipa2,	
			A.IDUtilizador
			FROM A_Apostas A
			INNER JOIN A_JornadaDescricao JD
			ON A.IDJornada = JD.IDJornada And JD.NumJogo = A.NumJogo
			WHERE 
			A.IDUtilizador IN (SELECT IDUtilizador FROM A_UtilizadorCampeonato 
								WHERE IDCampeonato = JD.IDCampeonato AND Activo = 1)
			AND A.IDJornada = @UltimaJornada
			AND JD.Realizado = 1
			ORDER BY Hora ASC

			OPEN TratementoClassificacao
			FETCH NEXT FROM TratementoClassificacao INTO @IDCampeonato,@IDJornada,@NumJogo,@Aposta1,@Aposta2,@ResultadoEquipa1
														,@ResultadoEquipa2,@IDUtilizador
			WHILE @@FETCH_STATUS = 0
			BEGIN

			SELECT @Jogos = Jogos From A_ClassificacaoActual WHERE IDUtilizador = @IDUtilizador AND IDCampeonato = @IDCampeonato
			SELECT @Vitorias = Vitorias From A_ClassificacaoActual WHERE IDUtilizador = @IDUtilizador AND IDCampeonato = @IDCampeonato
			SELECT @Empates = Empates From A_ClassificacaoActual WHERE IDUtilizador = @IDUtilizador AND IDCampeonato = @IDCampeonato
			SELECT @Derrotas = Derrotas From A_ClassificacaoActual WHERE IDUtilizador = @IDUtilizador AND IDCampeonato = @IDCampeonato
			SELECT @GM = GM From A_ClassificacaoActual WHERE IDUtilizador = @IDUtilizador AND IDCampeonato = @IDCampeonato
			SELECT @GS = GS From A_ClassificacaoActual WHERE IDUtilizador = @IDUtilizador AND IDCampeonato = @IDCampeonato
			SELECT @DifGolos = DifGolos From A_ClassificacaoActual WHERE IDUtilizador = @IDUtilizador AND IDCampeonato = @IDCampeonato
			SELECT @Pontos = Pontos FROM A_ClassificacaoActual WHERE IDUtilizador = @IDUtilizador AND IDCampeonato = @IDCampeonato

			SET @Jogos = @Jogos + 1

			IF @Aposta1 = @ResultadoEquipa1 AND @Aposta2 = @ResultadoEquipa2
				BEGIN
					--Vitoria 3
					SET @Vitorias = @Vitorias + 1
					SET @Pontos = @Pontos + 3
				END
			
			ELSE IF @Aposta1 > @Aposta2 AND @ResultadoEquipa1 > @ResultadoEquipa2
				BEGIN
					--Empate 1
					SET @Empates = @Empates + 1
					SET @Pontos = @Pontos + 1
				END
			
			ELSE IF @Aposta1 < @Aposta2 AND @ResultadoEquipa1 < @ResultadoEquipa2
				BEGIN
					--Empate 1
					SET @Empates = @Empates + 1
					SET @Pontos = @Pontos + 1
				END
			
			ELSE IF @Aposta1 = @Aposta2 AND @ResultadoEquipa1 = @ResultadoEquipa2
				BEGIN
					--Empate 1
					SET @Empates = @Empates + 1
					SET @Pontos = @Pontos + 1
				END
			
			ELSE
				BEGIN
					--Derrota 0
					SET @Derrotas = @Derrotas + 1
					SET @Pontos = @Pontos + 0
				END

			EXEC A_UPD_ClassificacaoActual  @IDUtilizador, @IDCampeonato, @Jogos, @Vitorias, @Empates, @Derrotas, @GM, @GS, @DifGolos, @Pontos

			FETCH NEXT FROM TratementoClassificacao

			INTO @IDCampeonato,@IDJornada,@NumJogo,@Aposta1,@Aposta2,@ResultadoEquipa1
				,@ResultadoEquipa2,@IDUtilizador
			END 

			CLOSE TratementoClassificacao
			DEALLOCATE TratementoClassificacao

		COMMIT TRAN

	END TRY
	BEGIN CATCH

		ROLLBACK TRAN

	END CATCH
	
END
